The field of the invention is telephony systems and more specifically a system and method for specifying applications and controlling telephone sessions in the telephony field.
In an effort to reduce costs while still providing good service, many businesses have implemented interactive telephony (IT) systems that receive and handle customer phone calls in various ways. For instance, a customer calling a first bank may want to determine an account balance, authorize payment of two bills and also speak to a banking representative about how to arrange a wire transfer of funds from a second bank to the first bank. The account balance and bill payment activities can be handled using an IT system whereby a computer verbally interacts with a customer who responds in voice or via the number pad on a telephone device or another keyboard and the computer guides the customer through a “phone tree” to an application that will verbally announce the account balance and another application that enables the customer to authorize payment or the two bills. After the balance is obtained and the bills are paid, the customer can use the IT system to connect to a bank representative to discuss the wire transfer. Thus, most of the customer's needs can be achieved via a computer without requiring the customer to hold for a bank representative and without requiring human interaction. Overall these systems provide better customer service at a reduced cost and therefore increase competitiveness of the business.
Early IT systems were complex to set up and required highly skilled employees or consultants to develop different functionalities and therefore were relatively expensive to implement, maintain, and modify. For example, early systems required businesses to hire employees or consultants skilled in voice networking, codecs and hardware and services to bridge servers to public phone infrastructures and to train programmers in new software applications, tools and development environments that were, in most cases unrelated to the products and services provided by the businesses. In addition, businesses had to make large capital investments in hardware to run their IT systems.
One solution which appreciably reduces the costs of developing, maintaining and altering an IT system has been provided by third parties that act as intermediaries or gateways between a business and customers. To this end, instead of requiring a business to develop a complete IT application program, the intermediate third party develops reusable functional modules for carrying out different functions required by the IT application program. A business maintains high level application logic on a business server (e.g., a server operated by the business) and links to the functional modules on the third party server each time the application logic requires the process performed by one of the functional modules. Thus, for instance, one functional module may be designed to obtain a number input via a customer voice message where options include the numbers one through five for routing customers to different sections of a phone tree. Each functional module is accessible via a simple application program interface (API). Unless indicated otherwise, a third party server used to maintain and develop IT systems will be referred to as a gateway server and a business that uses a gateway server to provide IT services to customers will be referred to as an “end user” or “telephony client”.
In addition to unloading expertise and hardware costs associated with an IT system onto an expert third party, existing gateway type systems have enabled web developers working for telephone clients to use their existing skills and tools to develop IT applications which makes IT application development as easy as web programming. For instance, in at least some cases a gateway enables a familiar web site visitor model to interact with a web developer's application. Within the model developers reuse existing tools and techniques including familiar concepts like HTTP redirects, accessing functional modules through an API and mime-type responses to construct complex IT applications.
In operation, when a customer calls a telephony client (e.g., a business that has contracted with a gateway for IT services), the gateway server intercepts the call, identifies the telephony client associated with the phone number used to initiate the call and uses a URL to link to a server controlled by the telephony client that starts the IT process. The gateway server and client server communicate via HTTP requests from the gateway server to the client server and HTTP responses from the client server to the gateway server where the requests provide information to the client server and the responses indicate next functional modules to perform per the high level IT application run by the client server.
While existing gateway type systems have proven useful in reducing expertise and capital outlays required by end users when implementing IT systems, existing gateway systems have several shortcomings. First, because the IT application logic is maintained by each telephone client that uses a gateway system, each telephone client still has to dedicate resources to the IT system. As an IT application becomes more complex, the resources required for a telephone client to maintain the IT application become greater. Similarly, as a business grows and more customers use a telephone client's IT system, the client has to dedicate more resources to capabilities to handle larger numbers of simultaneous calls from customers.
Second, IT application development still requires training in web programming tools. While many programmers are already trained in web application programming, many small businesses do not have programmers on staff and therefore third party consultants are often needed to develop an IT application which increases cost and may limit the ability of some small telephone clients to take advantage of a gateway system.
Third, there is delay each time a message is transmitted from a gateway to an telephone client server that runs an IT application. While the delays are short in many cases, the delays can be bothersome in at least some cases and therefore any solution that can reduce latency during a call would be useful.
Fourth, during programming an IT application using a gateway there is no easy way to test a portion of an IT application so that the developer can get a sense of what a customer will experience when the IT application is deployed. On the fly testing of application functions would be extremely useful and would enable a an application developer to test different activities and develop a better overall IT application for an telephone client.